package bizcode

import (
	"gin-demo/pkg/e"
	"net/http"
	"strconv"
)

var (
	BizCode500 = BizCode{200, 500, "系统错误"}
)

type BizCode struct {
	HttpCode int
	Code     int
	Msg      string
}

func (bizCode BizCode) PanicError(httpCode int, errCode int, msg string) {
	bizCode.HttpCode = httpCode
	bizCode.Code = errCode
	message := e.GetMsg(errCode)
	if msg != "" {
		message = message + "：" + msg
	}
	bizCode.Msg = message
	panic(bizCode)
}

func (bizCode BizCode) Error() string {
	return strconv.FormatInt(int64(bizCode.Code), 10) + "-" + bizCode.Msg
}

func Check(err error) {
	if err != nil {
		panic(err.Error())
	}
}

func CheckBizCode(err error, bizCode BizCode) {
	if err != nil {
		panic(err.Error() + bizCode.Error())
	}
}

func DbCheck(err error) {
	Check(err)
	if err != nil {
		panic(BizCode{http.StatusOK, ErrorDb, "数据库操作异常!"})
	}
}
